package br.usp.pcs.acs.negocios.voo;

import java.util.ArrayList;
import java.util.Date;

import br.usp.pcs.acs.negocios.dao.AeronaveDao;
import br.usp.pcs.acs.negocios.dao.PADao;
import br.usp.pcs.acs.negocios.dao.VOODao;
import br.usp.pcs.acs.negocios.dto.PADto;
import br.usp.pcs.acs.negocios.dto.VOODto;
import br.usp.pcs.acs.negocios.usuarios.*;

import br.usp.pcs.acs.infraestrutura.Portao;

public class Voo 
{


	private CA ca;
	private Aeronave aviao;
	private ArrayList<Passageiro> passageiros;
	private Portao portao;
	private VOODto vOODto;
	
	//Constructor
	public Voo()
	{
	}

	
	public VOODto getVOODto() {
		return vOODto;
	}
	public void setVOODto(VOODto dto) {
		vOODto = dto;
	}


	public Portao getPortao() {
		return portao;
	}

	public void setPortao(Portao portao) {
		this.portao = portao;
	}
	public Aeronave getAviao() {
		return aviao;
	}

	public ArrayList<Passageiro> getPassageiros() {
		return passageiros;
	}

	public void setPassageiros(ArrayList<Passageiro> passageiros) {
		this.passageiros = passageiros;
	}

	public void setAviao(Aeronave aviao) {
		this.aviao = aviao;
	}


	public CA getCa() {
		return ca;
	}

	public void setCa(CA ca) {
		this.ca = ca;
	}

	public static ArrayList<Voo> findNext(int quant, Date data)
	{
		VOODao dao = new VOODao();			
		java.sql.Date dataSql = new java.sql.Date(data.getTime());
		ArrayList<VOODto> dtos = dao.findNextNByDate(dataSql, quant);
		ArrayList<Voo> retorno = new ArrayList<Voo> ();
		for(int i =0; i<dtos.size();i++)
		{
			Voo temp = new Voo();
			temp.setVOODto(dtos.get(i));
			retorno.add(temp);
		}
		return retorno;		
	}
	
	public static ArrayList<Voo> getPendentes()
	{
		VOODao dao = new VOODao();	
		ArrayList<VOODto> dtos = dao.findPendentes();
		ArrayList<Voo> retorno = new ArrayList<Voo> ();
		for(int i =0; i<dtos.size();i++)
		{
			Voo temp = new Voo();
			temp.setVOODto(dtos.get(i));
			retorno.add(temp);
		}
		return retorno;		
	}
	
	public static ArrayList<Voo> findByNumber(String vooNumber)
	{
		VOODao dao = new VOODao();
		ArrayList<VOODto> dtos = dao.findByNumber(vooNumber);
		ArrayList<Voo> retorno = new ArrayList<Voo> ();
		for(int i =0; i<dtos.size();i++)
		{
			Voo temp = new Voo();
			temp.setVOODto(dtos.get(i));
			retorno.add(temp);
		}
		return retorno;
	}
	
	public void addPassageiro(Passageiro pass)
	{
		this.passageiros.add(pass);
	}
	
	public void deleteVoo()
	{
		VOODao dao = new VOODao();
		dao.remove(vOODto.getId());
	}

	public void commitChanges()
	{
		VOODao dao = new VOODao();
		if(this.vOODto.getId()==0)
			dao.insert(this.vOODto);
		else
			dao.edit(this.vOODto);
	}
}
